// https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/description/
// 下面代码是自己听完解析自己写出来的

function maxProfit(prices:number[]):number {
    // 1.定义状态
    const dp:number[] = [];
    // 2.定义初始值
    dp[0] = 0; // dp存储的是当天卖出能赚到的最多的钱
    let minPrice = prices[0];// 股票最低的时候是多少钱
    
    for (let i = 1; i < prices.length; i++) {
        // 3.状态转移方程，拿到当天股票的价格减去之前最小的值，算出当天卖出的最大利润
        dp[i] = prices[i] - minPrice;
        // 如果当天的值比之前的小，更新最小值，这里更新只表示当前i之前的最小是
        if(prices[i]< minPrice){
            minPrice = prices[i];
        }
    }
    // 4.最终的dp是每天卖出的最大利润，遍历数组，找到大于0的最大值，最后将结果返回
    let result = dp[0]
   for(let i = 1; i <= dp.length; i++) {
    if(dp[i] > 0 && dp[i] > result){
        result = dp[i];
    }
   }
   return result
}

maxProfit([7,1,5,3,6,4])

export default {}
